package com.mh.service;

import com.mh.domain.Customer;
import com.mh.domain.Invoice;
import com.mh.domain.Item;

import java.util.List;
import java.util.Set;

/**
 * Spring service that handles CRUD requests for Invoice entities
 * 
 */
public interface InvoiceService {

	/**
	 */
	public Invoice findInvoiceByPrimaryKey(Integer id);

	/**
	 * Delete an existing Customer entity
	 * 
	 */
	public Invoice deleteInvoiceCustomer(Integer invoice_id, Integer related_customer_id);

	/**
	 * Return a count of all Invoice entity
	 * 
	 */
	public Integer countInvoices();

	/**
	 * Return all Invoice entity
	 * 
	 */
	public List<Invoice> findAllInvoices(Integer startResult, Integer maxRows);

	/**
	 * Save an existing Customer entity
	 * 
	 */
	public Invoice saveInvoiceCustomer(Integer id_1, Customer related_customer);

	/**
	 * Load an existing Invoice entity
	 * 
	 */
	public Set<Invoice> loadInvoices();

	/**
	 * Delete an existing Invoice entity
	 * 
	 */
	public void deleteInvoice(Invoice invoice);

	/**
	 * Save an existing Invoice entity
	 * 
	 */
	public void saveInvoice(Invoice invoice_1);

	/**
	 * Save an existing Item entity
	 * 
	 */
	public Invoice saveInvoiceItems(Integer id_2, Item related_items);

	/**
	 * Delete an existing Item entity
	 * 
	 */
	public Invoice deleteInvoiceItems(Integer invoice_id_1, Integer related_items_id);
	
	public List<Invoice> findAllInvoices(Invoice invoice, Integer startResult, Integer maxRows);
	
	public List<Invoice> findAllInvoicesForCustomer(Customer customer, int startResult, int maxRows);
	
}